//-------------------------------------------------------------------------------//
#ifndef GAME_H
#define GAME_H
#pragma once

#include "globals.h"

//-------------------------------------------------------------------------------//
// Game - Our base class, that any game should inherit from.
//-------------------------------------------------------------------------------//
class Game
{
public:
    Game();
    virtual ~Game();

    //-------------------------------------------------------------------------------//
    // Game::Initiate() - This sets up an HGE window based on data loaded from a file.
    virtual void Initiate ( string filename );
    //-------------------------------------------------------------------------------//
    // Game::Destroy() - Deletes HGE objects, and resource managers.
    virtual void Destroy();

    //-------------------------------------------------------------------------------//
    // Game::Setup() - Loads objects, sprites, textures, fonts, etc.
    virtual void Setup() = 0;
    //-------------------------------------------------------------------------------//
    // Game::Cleanup() - Cleans up objects, and frees memory.
    virtual void Cleanup() = 0;

    //-------------------------------------------------------------------------------//
    // Game::Update() - Updates the game, positions, velocities, the world, etc.
    virtual bool Update () = 0;
    //-------------------------------------------------------------------------------//
    // Game::Render() - Renders the game, texture, fonts, the world, etc.
    virtual void Render() = 0;

protected:
    HGE* m_HGE;
    hgeResourceManager* m_rManager;
};

#endif // GAME_H
//-------------------------------------------------------------------------------//
